Code protection is provided by the shell protection method that wraps
the executable. The shell protection employs several techniques to protect the
code (including algorithms and intellectual property) against tampering and
reverse engineering. The techniques include code encryption,
anti-debugging/anti-tracing, and anti-tampering. In addition, the KeyCheck API
also provides a method to authenticate the Key and protect against DLL
emulation.
·
Code Encryption. The shell protection encrypts the whole native executable or managed
.NET assembly to safeguard against decompilation and disassembly. To thwart
access to the code, the shell protection only decrypts the needed code just
before the run time in memory. After the execution, the code is immediately
returned to its encrypted state.
·
Anti-Debugging and Anti-Tracing. The shell protection transparently and
constantly monitors the run-time to detect if the executable runs under control
of a debugger. When such an event is detected, the shell protection immediately
halts the operation of the executable. In addition, the shell protection itself
is designed with complicated and confused logics to protect against debugging
and tracing.
·
Anti-Tampering. The shell protection always performs integrity check of the executable,
as well as the ElecKey system files, to protect against tampering,
modification, and virus infection. If it is found that the checksum of the
executable or the ElecKey system files is different from the originally
computed, the shell protection immediately terminates the executable.
·
Key Authentication. The Key system allows you to specify and store up to
10 key-value pairs for authentication purposes. Using the KeyCheck API, you can
create a series of random challenge-response authentication from the
application to the Key. While the application interfaces with the Key through
the provided DLL, this method can provide extra security to protect against DLL
emulation.